加密

您所在的位置:网站首页 微软 加密 加密

加密

2024-03-02 07:31| 来源: 网络整理| 查看: 265

加密 项目 05/10/2023

SQLite 在默认情况下不支持加密数据库文件。 而是需要使用修改后的 SQLite 版本,如 SEE、SQLCipher、SQLiteCrypt 或 wxSQLite3。 本文演示如何使用 SQLCipher 的不受支持的开放源代码内部版本,但该信息也适用于其他解决方案,因为它们通常遵循相同的模式。

安装 .NET Core CLI Visual Studio dotnet remove package Microsoft.Data.Sqlite dotnet add package Microsoft.Data.Sqlite.Core dotnet add package SQLitePCLRaw.bundle_e_sqlcipher Remove-Package Microsoft.Data.Sqlite Install-Package Microsoft.Data.Sqlite.Core Install-Package SQLitePCLRaw.bundle_e_sqlcipher

有关使用不同的本机库进行加密的详细信息,请参阅自定义 SQLite 版本。

指定密钥

若要对新数据库启用加密,请使用 Password 连接字符串关键字指定密钥。 使用 SqliteConnectionStringBuilder 可从用户输入添加或更新值,并避免连接字符串注入攻击。

var connectionString = new SqliteConnectionStringBuilder(baseConnectionString) { Mode = SqliteOpenMode.ReadWriteCreate, Password = password }.ToString();

提示

加密和解密现有数据库的方法因你使用的解决方案而异。 例如,你需要在 SQLCipher 上使用 sqlcipher_export() 函数。 查看解决方案文档,以了解详细信息。

对数据库重新生成密钥

如果要更改已加密数据库的密钥,请发出 PRAGMA rekey 语句。

遗憾的是,SQLite 在 PRAGMA 语句中不支持参数。 请改用 quote() 函数防止 SQL 注入。

var command = connection.CreateCommand(); command.CommandText = "SELECT quote($newPassword);"; command.Parameters.AddWithValue("$newPassword", newPassword); var quotedNewPassword = (string)command.ExecuteScalar(); command.CommandText = "PRAGMA rekey = " + quotedNewPassword; command.Parameters.Clear(); command.ExecuteNonQuery();


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3